//
//  HomeTableViewController.swift
//  MyBlog
//
//  Created by lvtienan on 15/7/28.
//  Copyright © 2015年 ltn. All rights reserved.
//

import UIKit

class HomeTableViewController: BaeTableViewController {
    
    // 微博数据数组
    var statuses: [Status]? {
        didSet {
            // 刷新数据
            tableView.reloadData()
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 如果用户没有登录,设置访客视图,然后返回
        if !UserAccount.userLogin {
        visitorView?.setupViewInfo(true, imageName: "visitordiscover_feed_image_smallicon", message: "关注一些人，回这里看看有什么惊喜")
            
            return
        }
        
        // 测试代码,刷新控件.高度60
        refreshControl = UIRefreshControl()
        // 测试添加视图
        let v = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 60))
        v.backgroundColor = UIColor.redColor()
        refreshControl?.addSubview(v)
        // 隐藏默认的转轮
        refreshControl?.tintColor = UIColor.clearColor()
        
        // 监听方法
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
        
        prepareTable()
         loadData()
    }
    
    /// 准备表格视图
    private func prepareTable() {
        // 注册原型 Cell
        // rawValue 返回枚举对应的实际数值
        tableView.registerClass(StatusForwardCell.self, forCellReuseIdentifier:StatusCellIdentifier.ForwardCell.rawValue)
        tableView.registerClass(StatusNormalCell.self, forCellReuseIdentifier: StatusCellIdentifier.NormalCell.rawValue)
        
//        // 设置表哥的预估行高,方便表格提前计算行高,提高性能
//        tableView.estimatedRowHeight = 200
//        // 设置行高
//        tableView.rowHeight = UITableViewAutomaticDimension
//        tableView.rowHeight = 300
        tableView.estimatedRowHeight = 300
        // 分割线的样时候
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    }

    /// 加载数据
    private func loadData() {

        Status.loadStatus { (dataList, error) -> () in
            if error != nil {
                print(error)
                return
            }
            self.statuses = dataList
        }
    }

    // MARK: - 数据源方法
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // 返回数据元素个数,如果数组为空就返回0
        return statuses?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let status = statuses![indexPath.row]
        
        let cell = tableView.dequeueReusableCellWithIdentifier(StatusCellIdentifier.cellID(status), forIndexPath: indexPath) as! StatusCell
        
        cell.status = status
        
        return cell
        
    }
    
    // 返回行高
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
         let status = statuses![indexPath.row]
        // 从缓存中取行高
        if let h = status.rowHeight {
            return h
        }
        
        let cell = tableView.dequeueReusableCellWithIdentifier(StatusCellIdentifier.cellID(status)) as? StatusCell
        status.rowHeight = cell!.rowHeight(status)
        
        return status.rowHeight!
    }
 

}









